package cn.mw.cmdb.timetask.service;

import cn.mw.cmdb.timetask.entity.MwTimeTaskDto;
import cn.mw.cmdb.timetask.entity.MwTimeTaskTypeDto;
import cn.mw.cmdb.timetask.entity.TaskRecordDto;
import cn.mw.cmdb.timetask.param.MwTimeTaskParam;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * @description 定时任务
 */
public interface MwTimeTaskService {

    //保存任务类型
    void saveTimeTaskType(MwTimeTaskTypeDto timeTaskTypeDto);

    //删除任务模块数据
    void deleteTimeTaskType(MwTimeTaskParam timeTaskParam);

    //查询任务分组信息
    List<MwTimeTaskTypeDto> selectTimeTaskTypeList(MwTimeTaskParam timeTaskParam);

    //查询具体任务
    Page selectTimeTask(MwTimeTaskParam timeTaskParam);

    //添加任务
    void save(MwTimeTaskDto timeTaskDto);

    //删除任务
    void remove(MwTimeTaskParam timeTaskParam) throws Exception;


    //获取任务执行记录
    Page getTaskExecuteRecord(MwTimeTaskParam timeTaskParam);

    //获取任务实例详情
    TaskRecordDto getTaskInstanceDetails(MwTimeTaskParam timeTaskParam);

    //获取任务执行日志
    TaskRecordDto getTaskRunLog(MwTimeTaskParam timeTaskParam);

    //运行任务
    void runTask(MwTimeTaskParam timeTaskParam);

    //修改任务状态
    void updateTaskStatus(MwTimeTaskParam timeTaskParam);

    //任务重试
    void taskRetry(MwTimeTaskParam timeTaskParam);

    //任务停止
    void taskStop(MwTimeTaskParam timeTaskParam);

    //校验定时器表达式
    List checkTimeExpression(MwTimeTaskParam timeTaskParam);
}
